/*
 * Cuenta.java
 *
 * Created on 1 de agosto de 2007, 01:08 PM
 */

package administrador;

import java.sql.*;
import javax.swing.*;

/**
 *
 * @author  daniel1
 */
public class Cuenta extends javax.swing.JFrame {
    String opcion;
    int nivel;
    Conexion conexion;
    AdministradorCuentas adminc;
    /** Creates new form Cuenta */
    
    public Cuenta(String opcion, int nivel,Conexion c,AdministradorCuentas acEnt) {
        this.opcion=opcion;
        this.nivel=nivel;
        conexion=c;
        adminc=acEnt;
        initComponents();
        setVisible(true);
        setBounds(350,200,300,200);
        configuroVentana(opcion);
        
        
    }
    
    public void configuroVentana(String opcion){
        boton.setText(opcion);
        if(nivel==3){
            cb_signo.setVisible(true);
            lbl_signo.setVisible(true);
        }else{
            cb_signo.setVisible(false);
            lbl_signo.setVisible(false);
        }
       
            if(opcion.equals("Crear")){
                sacoNuevoCodigo();
                
            }
            else{
                try{
                int fila=adminc.tb_n1.getSelectedRow();
                sacoDatos();
                }catch(Exception e){
                this.dispose();    
                JOptionPane.showMessageDialog(this,"Tiene que seleccionar una fila.","Informacion",JOptionPane.INFORMATION_MESSAGE);
                }
                
                
            }

        
    }
    
   
    
    public void sacoDatos(){
   String tnivel="";
   if(nivel==1){
       
       
        int fila=adminc.tb_n1.getSelectedRow();
        String codigo=adminc.tb_n1.getValueAt(fila,0).toString();
        String nombre=adminc.tb_n1.getValueAt(fila,1).toString();
        txt_codigo.setText(codigo);
        txt_nombre.setText(nombre);
        
    }else if(nivel==2){
       
       
        int fila=adminc.tb_n2.getSelectedRow();
        String codigo=adminc.tb_n2.getValueAt(fila,0).toString();
        String nombre=adminc.tb_n2.getValueAt(fila,1).toString();
        txt_codigo.setText(codigo);
        txt_nombre.setText(nombre);
        
    }else if(nivel==3){
       
       
        int fila=adminc.tb_n3.getSelectedRow();
        String codigo=adminc.tb_n3.getValueAt(fila,0).toString();
        String nombre=adminc.tb_n3.getValueAt(fila,1).toString();
        String signo=adminc.tb_n3.getValueAt(fila,2).toString();
        txt_codigo.setText(codigo);
        txt_nombre.setText(nombre);
        if(signo.equals("+")){
        cb_signo.setSelectedIndex(0);
        }else{
        cb_signo.setSelectedIndex(1);
        }
        
    }
   
    }
    
    public void sacoNuevoCodigo(){
   String tnivel="";
   String texto_sn="";
   String codigoselec="";
   String codigoselec2="";
   if(nivel==1){
    tnivel="primer";
    }
   else if(nivel==2){
    tnivel="segundo";
        //Reviso si primer nivel esta seleccionado:
        try{
            //Si esta seleccionado:
            codigoselec=adminc.tb_n1.getValueAt(adminc.tb_n1.getSelectedRow(),0).toString();
            texto_sn=" where cod_primernivel="+codigoselec+" ";
            codigoselec=codigoselec+",";
        }catch(Exception e){
            //No esta Seleccionado:
            JOptionPane.showMessageDialog(this,"Seleccione una cuenta del Primer nivel para crear una del segundo.","Informacion",JOptionPane.INFORMATION_MESSAGE);
            this.dispose();
        }
     
    }
   else if(nivel==3){
    tnivel="tercer";
       //Reviso si el primer nivel y el segundo estan seleccionado:
        try{
            //Si esta seleccionado:
            codigoselec=adminc.tb_n1.getValueAt(adminc.tb_n1.getSelectedRow(),0).toString();
            codigoselec2=adminc.tb_n1.getValueAt(adminc.tb_n2.getSelectedRow(),0).toString();
            texto_sn=" where cod_primernivel="+codigoselec+" and cod_segundonivel="+codigoselec2+" ";
            codigoselec=codigoselec+","+codigoselec2+",";
        }catch(Exception e){
            //No esta Seleccionado:
            JOptionPane.showMessageDialog(this,"Seleccione una cuenta del Primer y Segundo nivel para crear una del tercero.","Informacion",JOptionPane.INFORMATION_MESSAGE);
            this.dispose();
        }
     
     
   }     
    
    //Saco el nuevo codigo:   
        ResultSet r=conexion.consultarBase("SELECT max(cod_"+tnivel+"nivel) FROM "+tnivel+"nivel "+texto_sn+";");
        int tuplas=0;
                try {
                    r.beforeFirst();
                    r.next();
                    tuplas=r.getInt(1);
                   //System.out.println(tuplas+" =resp");
                } catch (SQLException ex) {
                    ex.printStackTrace();
                }
    txt_codigo.setText(codigoselec+String.valueOf(tuplas+1));
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
    private void initComponents() {
        jPanel1 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        lbl_signo = new javax.swing.JLabel();
        txt_codigo = new javax.swing.JTextField();
        txt_nombre = new javax.swing.JTextField();
        cb_signo = new javax.swing.JComboBox();
        boton = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Cuenta"));
        jLabel1.setFont(new java.awt.Font("Tahoma", 1, 12));
        jLabel1.setText("Crear Cuenta:");

        jLabel2.setText("Nombre:");

        jLabel3.setText("Codigo");

        lbl_signo.setText("Signo");

        cb_signo.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Positivo", "Negativo" }));

        boton.setText("Modificar");
        boton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 97, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 143, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(lbl_signo)
                            .addComponent(jLabel3, javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 50, Short.MAX_VALUE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(txt_codigo, javax.swing.GroupLayout.DEFAULT_SIZE, 186, Short.MAX_VALUE)
                            .addComponent(txt_nombre, javax.swing.GroupLayout.DEFAULT_SIZE, 186, Short.MAX_VALUE)
                            .addGroup(jPanel1Layout.createSequentialGroup()
                                .addComponent(cb_signo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 40, Short.MAX_VALUE)
                                .addComponent(boton)))))
                .addGap(14, 14, 14))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 27, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(txt_codigo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel3))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(txt_nombre, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel2))
                .addGap(8, 8, 8)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(cb_signo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(lbl_signo)
                    .addComponent(boton))
                .addContainerGap(25, Short.MAX_VALUE))
        );
        getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void botonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonActionPerformed
// TODO add your handling code here:
if(txt_codigo.getText().toString().equals("")||txt_nombre.getText().toString().equals("")) {
    
}else{

        
 //Saco los valores:
        String codigo=txt_codigo.getText();
        String nombre=txt_nombre.getText();
        if(nivel==1){
            if(boton.getText().equals("Crear")){
                conexion.insertarDatos("insert into primernivel values("+codigo+",'"+nombre+"');");
                
            } else if(boton.getText().equals("Modificar")){
                conexion.insertarDatos("update primernivel set nombre='"+nombre+"' where cod_primernivel="+codigo+";");
                
            } else if(boton.getText().equals("Borrar")){
                if(conexion.eliminarFilaResp("delete from primernivel where cod_primernivel="+codigo+";")){}else{
                 JOptionPane.showMessageDialog(this,"No se borra esta cuenta por que tiene otras cuentas Relacionadas.","Informacion",JOptionPane.INFORMATION_MESSAGE);
                }
                    
                
            }
        }
        if(nivel==2){
            if(boton.getText().equals("Crear")){
                //codigo=codigo.replaceAll(","," ");
                String[] codigos=codigo.split(",");
               //System.out.println(codigo+"|"+codigos.length);
                String codigo_pn=codigos[0];
                String codigo_sn=codigos[1];
                conexion.insertarDatos("insert into segundonivel values("+codigo_sn+","+codigo_pn+",'"+nombre+"');");
                
            } else if(boton.getText().equals("Modificar")){
                String[] codigos=codigo.split(",");
                String codigo_pn=codigos[0];
                String codigo_sn=codigos[1];
                conexion.insertarDatos("update segundonivel set nombre='"+nombre+"' where cod_primernivel="+codigo_pn+" and cod_segundonivel="+codigo_sn+" ;");
                
            } else if(boton.getText().equals("Borrar")){
                String[] codigos=codigo.split(",");
                String codigo_pn=codigos[0];
                String codigo_sn=codigos[1];
                if(conexion.eliminarFilaResp("delete from segundonivel where cod_primernivel="+codigo_pn+" and cod_segundonivel="+codigo_sn+" ;")){}else{
                 JOptionPane.showMessageDialog(this,"No se borra esta cuenta por que tiene otras cuentas Relacionadas.","Informacion",JOptionPane.INFORMATION_MESSAGE);
                }
                
            }
        }
         if(nivel==3){
            if(boton.getText().equals("Crear")){
                //codigo=codigo.replaceAll(","," ");
                String[] codigos=codigo.split(",");
                String codigo_pn=codigos[0];
                String codigo_sn=codigos[1];
                String codigo_tn=codigos[2];
                int signo=cb_signo.getSelectedIndex();
                conexion.insertarDatos("insert into tercernivel values("+codigo_tn+","+codigo_sn+","+codigo_pn+",'"+nombre+"',"+signo+");");
                
            } else if(boton.getText().equals("Modificar")){
                //codigo=codigo.replaceAll(","," ");
                String[] codigos=codigo.split(",");
                String codigo_pn=codigos[0];
                String codigo_sn=codigos[1];
                String codigo_tn=codigos[2];
                int select=cb_signo.getSelectedIndex();
                int signo=1;
                if(select==0){
                signo=1;}else{
                signo=0;
                }
                    
                conexion.insertarDatos("update tercernivel set nombre='"+nombre+"',signo="+signo+" where cod_primernivel="+codigo_pn+" and cod_segundonivel="+codigo_sn+" and cod_tercernivel="+codigo_tn+" ;");
                
            } else if(boton.getText().equals("Borrar")){
                //codigo=codigo.replaceAll(","," ");
                String[] codigos=codigo.split(",");
                String codigo_pn=codigos[0];
                String codigo_sn=codigos[1];
                String codigo_tn=codigos[2];
                
                if(conexion.eliminarFilaResp("delete from tercernivel where cod_primernivel="+codigo_pn+" and cod_segundonivel="+codigo_sn+" and cod_tercernivel="+codigo_tn+" ;")){}else{
                 JOptionPane.showMessageDialog(this,"No se borra esta cuenta por que tiene otras cuentas Relacionadas.","Informacion",JOptionPane.INFORMATION_MESSAGE);
                }
                
            }
        }
        
        
 //this.dispose();       
 adminc.refrescar();
}
    }//GEN-LAST:event_botonActionPerformed
    
   
    
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton boton;
    private javax.swing.JComboBox cb_signo;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JLabel lbl_signo;
    private javax.swing.JTextField txt_codigo;
    private javax.swing.JTextField txt_nombre;
    // End of variables declaration//GEN-END:variables
    
}
